package BD;


import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;

public class Fornecedor extends bd {

    int id_fornecedor = 0;
    String nome = "";
    String vendedor = "";
    String fone = "";

    public int getId_fornecedor() {
        return id_fornecedor;
    }

    public void setId_fornecedor(int id_fornecedor) {
        this.id_fornecedor = id_fornecedor;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getVendedor() {
        return vendedor;
    }

    public void setVendedor(String vendedor) {
        this.vendedor = vendedor;
    }

    public String getFone() {
        return fone;
    }

    public void setFone(String fone) {
        this.fone = fone;

    }

    public boolean incluir() {

        try {
            if (!estaConectado()) {
                conecta();
            }
            stmt = getConexao().createStatement();
//            id_fornecedor, nome, vendedor, fone
            sql = "INSERT INTO fornecedor (id_fornecedor, nome, vendedor, fone )VALUES ((select coalesce(max(id_fornecedor)+1,1) from fornecedor),"
                    + "'" + this.getNome() + "',"
                    + "'" + this.getVendedor() + "',"
                    + "'" + this.getFone() + "');";
            stmt.executeUpdate(sql);
            stmt.close();
            //System.out.print(this.sql);
            return true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return false;
        }
    }

    public boolean alterar() {
        try {
            if (!estaConectado()) {
                conecta();
            }

            stmt = getConexao().createStatement();
            sql = "UPDATE fornecedor "
                    + "SET nome='" + this.getNome() + "',"
                    + "vendedor='" + this.getVendedor() + "',"
                    + "fone='" + this.getFone() + "'"
                    + " where id_fornecedor ='" + Integer.toString(this.getId_fornecedor()) + "';";

            stmt.executeUpdate(sql);
            stmt.close();
            //System.out.print(this.sql);
            return true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return false;
        }

    }

    public ResultSet consultar() {
        if (!estaConectado()) {
            conecta();
        }
        try {
            stmt = getConexao().createStatement();
            sql = "SELECT *"
                    + "FROM fornecedor  "
                    + "WHERE 1=1 ";

            if (!this.nome.equals("")) {
                sql = sql + " AND nome like  '%" + this.getNome() + "%';";
            }
            rs = stmt.executeQuery(sql);
            return rs;

        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return null;
        }

    }

    public ArrayList<Fornecedor> getItens() {
        ArrayList itens = new ArrayList();
        rs = this.consultar();
        try {
            while (rs.next()) {
                Fornecedor obj = new Fornecedor();
                obj.setId_fornecedor(rs.getInt("id_fornecedor"));
                obj.setNome(rs.getString("nome"));
                obj.setVendedor(rs.getString("vendedor"));            
                obj.setFone(rs.getString("fone"));
                itens.add(obj);
            }
            stmt.close();
            disconecta();
        } catch (SQLException erro) {
            msgErro = erro.getMessage();
        }
        return itens;
    }

    public boolean excluir() {
        if (!estaConectado()) {
            conecta();
        }
        try {
            stmt = getConexao().createStatement();
            sql = "DELETE FROM fornecedor "
                    + "WHERE id_fornecedor = " + Integer.toString(this.id_fornecedor);
            stmt.execute(sql);
            return true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível  a Query \n" + objErro.getMessage());
            return false;
        }

    }
}
